{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "# 统计学习方法（第一版）笔记\n",
    "## 第1章-统计学习方法概论-导读\n",
    "### 统计学习\n",
    "**监督学习的实现步骤：** \n",
    "1. 得到一个有限的训练数据集合\n",
    "2. 确定模型的假设空间，也就是所有的备选模型\n",
    "3. 确定模型选择的准则，即学习的策略\n",
    "4. 实现求解最优模型的算法\n",
    "5. 通过学习方法选择最优模型\n",
    "6. 利用学习的最优模型对新数据进行预测或分析  \n",
    "\n",
    "**学习系统：** 模型假设空间、学习策略、学习算法\n",
    "\n",
    "### 监督学习\n",
    "训练集：$T={(x_1,y_1),(x_2,y_2), \\cdots,(x_N,y_N) }$  \n",
    "实例$x$的特征向量：$x=(x^{(1)},x^{(2)}, \\cdots, x^{(n)})$  \n",
    "模型：  \n",
    "1）决策函数：$Y=f(X)$  \n",
    "预测形式：$y=f(x)$  \n",
    "2）条件概率分布：$P(Y|X)$  \n",
    "预测形式：$\\mathop{\\arg\\max}\\limits_{y}P(y|x)$  \n",
    "**总结：**  \n",
    "&emsp;&emsp;首先介绍了训练集，在学习系统和模型这一部分，介绍了两种模型，第一种是以决策函数来表示的，第二种是以条件概率分布来表示的。  \n",
    "&emsp;&emsp;以决策函数来表示，给定一个输入$X$会得到一个相对应的预测值$Y$。如果是以条件概率分布来表示，输入一个$X$得到的是相对应的$Y$的分布，在实际预测中，取这个分布中$Y$的一个众数（即条件概率最大的那个点）。  \n",
    "\n",
    "### 统计学习三要素\n",
    "1. 模型（假设空间）：模型一共分为两种：决策函数和条件概率分布（前文已述）  \n",
    "决策函数：$F=\\{f|Y=f_\\theta(X),\\theta \\in R^n \\}$  \n",
    "条件概率分布：$F=\\{ P|P_\\theta(Y|X), \\theta \\in R^n \\}$  \n",
    "2. 策略：第一个要素是假设空间，我们已经确定了一个备选模型的集合，从该集合中找到一个最优的模型，策略就是以什么样的标准来确定最优模型。策略体现在损失函数上，损失函数是对于每一个实例，预测值和真实值之间差别的一个惩罚。 \n",
    "\n",
    "常见的损失函数：  \n",
    "- 0-1损失函数：$$L(Y, f(X))=\\left\\{\\begin{array}{l}{1, Y \\neq f(X)} \\\\ {0, Y=f(X)}\\end{array}\\right.$$一般用于分类问题。\n",
    "- 平方损失函数：$$L(Y, f(X))=(Y-f(X))^{2}$$一般由于回归问题。  \n",
    "- 绝对损失函数：$$L(Y, f(X))=|Y-f(X)|$$也是用于回归模型。平方损失函数，对于差值较大的观测值和预测值，它的惩罚力度会更强。\n",
    "- 对数似然损失函数：$$L(Y, P(Y|X))=-\\log P(Y|X)$$，针对条件概率函数。  \n",
    "\n",
    "&emsp;&emsp;现在介绍的损失函数，都是针对每一个具体的实例得到的损失，但是在学习过程中，在训练集中有多个实例，也会有多个损失函数，如何根据$N$个损失值来决定最优模型呢？\n",
    "下面有两个准则：  \n",
    "（1）经验风险最小化：$$\\min _{f \\in F} \\frac{1}{N} \\sum_{i=1}^{N} L\\left(y_{i}, f\\left(x_{i}\\right)\\right)$$  \n",
    "（2）结构风险最小化：$$\\min _{f \\in F} \\frac{1}{N} \\sum_{i=1}^{N} L\\left(y_{i}, f\\left(x_{i}\\right)\\right)+\\lambda J(f)$$，其中$J(f)$表示的是函数$f$的模型复杂度，平衡了经验风险和模型复杂度。\n",
    "\n",
    "3. 算法：如何根据策略，从这一系列的备选模型中，选择一个最优的模型。\n",
    "\n",
    "### 模型评估与模型选择\n",
    "训练误差：$$\\frac{1}{N} \\sum_{i=1}^{N} L\\left(y_{i}, \\widehat{f}\\left(x_{i}\\right)\\right)$$  \n",
    "测试误差：$$\\frac{1}{N^{\\prime}} \\sum_{i=1}^{N^{\\prime}} L\\left(y_{i}, \\widehat{f}\\left(x_{i}\\right)\\right)$$  \n",
    "\n",
    "### 正则化与交叉验证\n",
    "最小化结构风险：$$\\min _{f \\in F} \\frac{1}{N} \\sum_{i=1}^{N} L\\left(y_{i}, f\\left(x_{i}\\right)\\right)+\\lambda J(f)$$，通过最小化结构风险，平衡训练集的拟合程度和模型复杂度。  \n",
    "交叉验证：将训练集分成两部分，一部分是训练集，一部分是验证集。  \n",
    "\n",
    "### 泛化能力\n",
    "定理：泛化误差上界  \n",
    "对于二分类问题，当假设空间是有限个函数的集合$F=\\left\\{f_{1}, f_{2}, \\cdots, f_{d}\\right\\}$时，对任意一个函数$f \\in F$，至少以概率$1-\\delta$，以下不等式成立：$$R(f) \\leq \\hat{R}(f)+\\varepsilon(d, N, \\delta)$$其中$$\\varepsilon(d, N, \\delta)=\\sqrt{\\frac{1}{2 N}\\left(\\log d+\\log \\frac{1}{\\delta}\\right)}$$  \n",
    "解释：$R(f)$表示的是期望风险，$\\hat{R}(f)$是$f$在训练集上的经验风险，期望风险代表了$f$在预测数据，或者说在总体数据上的一个表现。这个定理保证了当学习到的模型在训练集上的经验风险，可以用来体现这个模型在总体数据或在测试集上的风险。  \n",
    "&emsp;&emsp;$N$表示样本量，样本量越大，用经验风险代表期望风险的效果越好；$d$表示备选模型的个数，个数越多，效果越差。  \n",
    "**注：** 泛化能力不是针对一个备选模型，而是针对假设空间中的所有模型都成立。\n",
    "\n",
    "### 生成模型与判别模型\n",
    "生成方法：$$P(Y | X)=\\frac{P(X, Y)}{P(X)}$$  \n",
    "判别方法：$$f(X) \\text{或} P(Y | X)$$\n",
    "\n",
    "### 分类问题\n",
    "- TP——将正类预测为正类数\n",
    "- FN——将正类预测为负类数\n",
    "- FP——将负类预测为正类数\n",
    "- TN——将负类预测为负类数  \n",
    "精确率：预测出来的正类中，有多大的比例是正确的$$P=\\frac{T P}{T P+F P}$$    \n",
    "召回率：真实情况下是正类的这些，预测准确的概率是多少$$R=\\frac{T P}{T P+F N}$$  \n",
    "\n",
    "### 标注问题\n",
    "输入：$x=\\left(x^{(1)}, x^{(2)}, \\cdots, x^{(n)}\\right)^{T}$  \n",
    "输出：$y=\\left(y^{(1)}, y^{(2)}, \\cdots, y^{(n)}\\right)^{T}$  \n",
    "例如：文本分类  \n",
    "输入：At Microsoft Research  \n",
    "输出：At/O Micosoft/B Research/E\n",
    "\n",
    "### 回归问题\n",
    "&emsp;&emsp;回归问题中，输出变量（预测值）是连续值，根据输出变量值的类型可以把监督学习分为分类问题和回归问题。\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.2"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": true,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {
    "height": "calc(100% - 180px)",
    "left": "10px",
    "top": "150px",
    "width": "240.188px"
   },
   "toc_section_display": true,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
